Method and system for  homomorphicly randomizing an input

ABSTRACT

A fully homomorphic method and system for randomizing an input, wherein all computations are over a commutative ring is described. Equivalent methods for performing the randomization using matrices and polynomials are detailed, as well as ways to mix the matrix and polynomial functions. Addition, multiplication, and division of the matrix and polynomial functions is further described. By performing computations of the functions modulo N over a ring Z N , the functions are usable as encryption functions. The method and system can also be used for verifying that a returned result of a calculation performed by a third party is valid for any of the calculations described herein. Related methods, systems, and apparatus are also described.

RELATED APPLICATIONS

The present application claims the benefit of priority from unpublished Israel applications IL 221152 filed 26 Jul. 2012 and IL 224400 filed 24 Jan. 2013, both of NDS Ltd.

FIELD OF THE INVENTION

The present invention relates to systems and methods of homomorphic randomization and encryption.

BACKGROUND OF THE INVENTION

Can Homomorphic Encryption be Practical, by Kristin Lauter, Michael Naehrig, Vinod Vaikuntanathan, July 2011 describes that the prospect of outsourcing an increasing amount of data storage and management to cloud services raises many new privacy concerns for individuals and businesses alike. The privacy concerns can be satisfactorily addressed if users encrypt the data they send to the cloud. If the encryption scheme is homomorphic, the cloud can still perform meaningful computations on the data, even though it is encrypted.

The promise of practical homomorphic encryption is sought by government, industry, and society. IBM and Microsoft have been vigorously pursuing research towards its potential promise as it, for example, enables ‘secure encrypted search’ (or ‘privacy-preserving information transfer’) by a public (open) cloud server; the server, for example, searches in an encrypted medical database (without knowing the query or the result), and delivering the encrypted result for decryption by the secure client. Yet another application of ‘secure function evaluation’ is where the open untrusted server executes a secret algorithm for an input without knowing the nature of the algorithm or the result. Thus a hacker who is presumed to have gained an open access to the public cloud server (even a malicious cloud service employee) presents no threat of compromise of the information or transaction. The applications of this homomorphic encryption are many and will enable wide-spread use of cloud computing allowing, for example, security conscious government and financial industry to move their services to the public cloud by encrypting their data bases and make them available for cloud computing without ever worrying about a security violation by the cloud service or outside hackers. Further, this privacy-preserving technology helps society cope with ever increasing attacks on confidential data not to mention private clouds. Note that the security of the above is not a result of a moving-target paradigm (e.g., software that is rapidly updated to thwart hackers' analysis) or clear software obfuscation but inherent in the mathematical nature of the homomorphic cryptosystem.

To date, homomorphic systems have been found to be impractical; only restricted special-case constrained uses have been shown to be of some potential for practical use.

Gentry et al. in STOC '09, Proceedings of the 41^(st) Annual ACM Symposium on Theory of Computing, pgs. 169-178, proposes a fully homomorphic encryption scheme—i.e., a scheme that allows one to evaluate circuits over encrypted data without being able to decrypt.

Xiao et al, in a paper entitled, An Efficient Homomorphic Encryption Protocol for Multi-User Systems, available at www.utdallas.edu/˜ilyen/techrep/HPbound.pdf propose a solution for the homomorphic encryption problem.

The following patent references are also believed to reflect the state of the art:

U.S. Pat. No. 7,254,586 to Chen et al;

WO/2010/100015 of INTRINSIC ID B.V.;

US 20100329454 of Takashima;

U.S. Pat. No. 7,472,093 to Juels; and

US 20110110525 of Gentry.

SUMMARY OF THE INVENTION

The present invention, in certain embodiments thereof, seeks to provide an improved practical fully homomorphic encryption system for specific data in Z_(N) (Z_(N) is the ring of residues modulo N; N is factored by two primes, p and q)) slated for crypto applications. For certain applications it is desirable to use random, large numbers in Z_(N), where large numbers are, for example, 1 Kbit, for practical considerations, based on the current state of the art.

Homomorphic encryption is a form of encryption which allows specific types of computations to be carried out on cipher text and obtain an encrypted result which is the cipher text of the result of operations performed on the plaintext. For instance, one person could add two encrypted numbers and then another person could decrypt the result, without either of them being able to find the value of the individual numbers. Homomorphic encryption schemes are malleable by design. The homomorphic property of various cryptosystems can be used to create secure voting systems, collision-resistant hash functions, private information retrieval schemes and enable widespread use of cloud computing by ensuring the confidentiality of processed data.

High performance non-deterministic fully-homomorphic methods for practical—randomization of data (over commutative ring) are presented herein, and symmetric-encryption of mod-N data over ring Z_(N) well suited for crypto applications. Embodiments of the present invention secure, for example, the multivariate input or the coefficients of a public polynomial function for running in an open untrusted environment. The methods employed may also provide enhanced protection for some existing crypto algorithms against certain attacks, e.g., securing OSS public key signature against Pollard attack. Further, the efficient nature of the methods (one large-numbers multiplication per encryption and six for the product of two encrypted values) motivates and enables the use of low cost collaborative security platforms for applications such as keyed-hash or private key derivation algorithms. Such platform is comprised of a low-cost (low performance) security element supported by an untrusted high performance server running the homomorphic algorithms. It is shown that random plaintext data is the sufficient condition for proof of security for the homomorphic encryption. The homomorphic randomization of data over a commutative ring offers protection against side-channel attacks (DPA) on, for example, AES key. Further, the methods have inherent coupling of parallel and inseparable computations that provide both fault detection and verification of computed-data integrity.

The proposed encryption scheme is expected to provide security solutions for many applications and for client/server models that include:

-   1. A low-cost-security platform; and -   2. An Open untrusted platform as the public cloud server indicated     above.

The low-cost-security platform is comprised of two elements that provide the collaborative security:

-   a) a Low-security High-performance component (e.g., PC (personal     computer), STB (set top box) or mobile computing device), that     performs homomorphic calculations, while hiding its secrets, and -   b) a High-security Low-performance element (e.g., low-cost SC (smart     card), RFID (radio frequency identification), SIM (subscriber     identification module), or secure OTP (one-time programmable memory)     serving a Secure Execution Environment) that securely holds long     term secrets and use them to perform few elementary calculations in     a trusted environment.

This platform is labeled as (LHHL) or (LH)² platform. Such platform could define a secure client made up of STB and SC, a smartphone with SIM, or Connected TV with an Arm TrustZone (or other secure execution environment).

The Open platform is, for example, and without limiting the generality of the foregoing, a PC (or a process running on a PC) residing in a public network (cloud) that is presumed to be untrusted.

By way of example, applications may use Homomorphic Encryption of data for:

-   -   Efficient PK-based (public/private key) signature, using         Homomorphically-Modified OSS (HoMoSS). Under this new scheme OSS         is made immune to Pollard attack (as described below) and         essentially retains its efficiency in comparison with RSA         signing operation. In such application the signer that holds the         private key is a (LH)² platform. Verification of the PK         signature can be made within an Open platform.     -   Hiding symmetric keys. Verification of a Keyed Hashed (e.g.,         secure HMAC verification) by a (LH)² client—for instance, and         without limiting the generality of the foregoing, an STB with         SC—where the STB performs homomorphic computation of most of the         verification operation, while the SC performs the final step         requiring decryption using the secret symmetric key.

There is thus provided in accordance with an embodiment of the present invention a fully homomorphic method for randomizing an input, wherein all computations are over a commutative ring hereinafter denoted as CR, the method including receiving an input denoted INP including a sequence of k input elements in CR, performing either (a) or (a): (a) randomly choosing a secret n×n matrix in CR, hereinafter denoted as S, S being utilized as a symmetric randomizing key, wherein S includes an invertible matrix over CR, determining S⁻¹, for each set i of m distinct input elements among k elements including INP, wherein 0<m<k+1 and m<n selected from INP that are to be jointly randomized, and denoted hereinafter as X₁, X₂, . . . , X_(m), selecting n−m (n minus m) random numbers Y₁, Y₂, . . . Y_(n-m), in CR, where the input elements X₁, X₂, . . . , X_(m), at least one random number selected from among the set of random numbers Y₁, Y₂, . . . Y_(n-m), and, optionally, one or more constants are placed in a diagonal of an n×n diagonal matrix, denoted M, wherein, aside from the diagonal, matrix M is only populated by zeros, and determining random output A_(im) for the m input elements in set i denoted as {X_(im)}=X₁, X₂, . . . , X_(m), by utilizing a matrix-based randomizing and homomorphic transformation function hereinafter denoted MRHT, wherein

${{MRHT}\left( \left\{ X_{im} \right\} \right)} = {A_{im} = {{SMS}^{- 1} = \begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix}}}$

thereby producing a random output A_(im) corresponding to the i set of m input elements {X_(im)}=X₁, X₂, . . . , X_(m), and (b) selecting n random numbers in CR, the n random numbers hereinafter denoted as v₁, v₂, . . . , v_(n), determining a public polynomial P(v)=Π_(i=1) ^(n)(v−v_(i))=Σ_(j=0) ^(n)C_(j)·v^(j) (C_(n)=1), selecting a polynomial-based randomizing and homomorphic transformation function hereinafter denoted PRHT (X_(im)), including any function in variable v of the form Σ_(j=0) ^(n−1)a_(ij)·v^(j) which satisfies the equations

Σ_(j=0) ^(n−1) a _(ij)·v_(i) ^(j) =X ₁,Σ_(j=0) ^(n−1) a _(ij) ·v ₂ ^(j) =X ₂, . . . ,Σ_(j=0) ^(n−1) a _(ij) ·v _(m) ^(j) =X _(m),

choosing n−m random values in CR, for a_(i,m), a_(i,m+1) . . . , a_(i,n−1), that would yield a solution for the above equations for a_(i,0), a_(i,1) . . . , a_(i,m−1), and performing either (c) or (d): (c) producing a random output A_(im) corresponding to input elements X₁, X₂, . . . , X_(m) including the set (a_(i0), a_(i1), . . . , a_(in−1)) and public set of coefficients (C₀, C₁, . . . , C_(n−1), C_(n)) of P(v), wherein the public set of coefficients (C₀, C₁, . . . , C_(n−1), C_(n)) are required for arithmetic performing operations with input elements, and (d) selecting for the given input elements X₁, X₂, . . . , X_(m), n−m random values R₁, . . . , R_(n−m) in CR that would solve the following n simultaneous equations

Σ_(j=0) ^(n−1) a _(ij)·v₁ ^(j) =x ₁, Σ_(j=0) ^(n−1) a _(ij) ·v ₂ ^(j) =x ₂, . . . , Σ_(j=0) ^(n−1) a _(ij) ·v _(m) ^(j)=x_(m), Σ_(j=0) ^(n−1) a _(ij) ·v _(m+1) ^(j) =R ₁,

Σ_(j=0) ^(n−1) a _(ij) ·v _(m+2) ^(j) =R ₂, . . . , Σ_(j=0) ^(n−1) a _(ij) ·v _(n) ^(j) =R _(n−m)

for unknowns a_(i0), a_(i1), . . . , a_(in−1), thereby producing, for X₁, X₂, . . . X_(m) a random text including the set (a_(i0), a_(i1), . . . , a_(in−1)) and public set (C₀, C₁, . . . , C_(n−1), C_(n)) of P(v).

Further in accordance with an embodiment of the present invention the randomization of the input INP includes a successive application of a mix of functions PRHT(X_(i)) and MRHT(X_(i)), where Xi denotes a set of m distinct input elements of INP and wherein

$\mspace{79mu} \begin{matrix} {{{MRHT}\left( {{PRHT}\left( X_{i} \right)} \right)} = \left( {{{MRHT}\left( \alpha_{i\; 0} \right)},{{MRHT}\left( \alpha_{i\; 1} \right)},\cdots \mspace{14mu},} \right.} \\ {\left( {{MRHT}\left( \alpha_{{i\; n} - 1} \right)} \right.} \\ {==\left( {\begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix}_{i\; 0},\begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix}_{i\; 1},} \right.} \\ {\left. {{= \cdots}\mspace{14mu},\begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix}_{{i\; n} - 1}} \right),{and}} \end{matrix}$ $\mspace{20mu} {{{PRHT}\left( {{MRHT}\left( X_{i} \right)} \right)} = {{PRHT}\left( \begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix} \right)}}$   where   PRHT(a_(mj)) = (a₀, a₁, ⋯  , a_( n − 1))_(mj),   therefore ${{PRHT}\left( {{MRHT}\left( X_{i} \right)} \right)} = {\begin{pmatrix} \left( {a_{0},a_{1},\cdots \mspace{14mu},a_{n - 1}} \right)_{11} & \cdots & \left( {a_{\; 0},a_{1},\cdots \mspace{14mu},a_{n - 1}} \right)_{1n} \\ \vdots & \ddots & \vdots \\ \left( {a_{0},a_{1},\cdots \mspace{14mu},a_{n - 1}} \right)_{n\; 1} & \cdots & \left. {a_{0},a_{\; 1},\cdots \mspace{14mu},a_{n - 1}} \right)_{nn} \end{pmatrix}.}$

Still further in accordance with an embodiment of the present invention performing either one of (a) and (b): (a) receiving an output including a randomized X_(im) input being an n×n diagonal matrix denoted hereinafter as A_(im), over CR, where

$A_{im} = {{{MRHT}\left( X_{im} \right)} = {{SMS}^{- 1} = \begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix}}}$

using S to determine

$S^{- 1} = \begin{pmatrix} s_{11}^{\prime} & \cdots & s_{1n}^{\prime} \\ \vdots & \ddots & \vdots \\ s_{n\; 1}^{\prime} & \cdots & s_{nn}^{\prime} \end{pmatrix}$

and determining X_(im) by performing one of S⁻¹. A_(im)·S=M where X₁, X₂, . . . , X_(m) are the upper left elements of the resulting diagonal matrix above, alternatively X_(i)=(1/s′_(i1))·Σ_(j=1) ^(n)a_(j1)·s′_(ij) for i=1, . . .m, and (b) receiving the randomized output for X_(im) as (a_(i0), a_(i1), . . . , a_(in−1))) and using v₁, v₂, . . . , v_(m) to determine the derandomized input Σ_(j=) ^(n−1)a_(ij)·v₁ ^(j)=x₁, Σ_(j=0) ^(n−1)a_(ij)·v₂ ^(j)=x₂, . . . , Σ_(j=0) ^(n−1)a_(ij)·v_(m) ^(j)=x_(m).

Additionally in accordance with an embodiment of the present, the method including for X_(i) including MRHT (X_(i))=A₁ receiving A₁ and A₂, and MRHT (X₁)+MRHT (X₂)=A₁+A₂, and for X_(i) including PRHT (X_(i))=a_(i0), a_(i1), . . . , a_(in−1) receiving PRHT (X₁)=a₁₀, a₁₁, . . . , a_(1n−1) and PRHT (X₂)=a₂₀, a₂₁, . . . , a_(2n−1) and C₀, C₁, . . . , C_(n−1), C_(n) of P(v)=Σ_(j=0) ^(n)C_(j)·v^(j) (C_(n)=1), and PRHT (X₁)+PRHT *X₂)=a₁₀+a₂₀, a₁₁+a₂₁, . . . , a_(1n−1)+a_(2n−1).

Moreover in accordance with an embodiment of the present invention, the method including for X_(i) including MRHT (X_(i))=A_(i) receiving A₁ and A₂, and MRHT (X₁)·MRHT (X₂)=A₁·A₂, and for X_(i) including PRHT (X_(i))=a_(i0), a_(i1), . . . , a_(in−1) receiving PRHT (X₁)=a₁₀, a₁₁, . . . , a_(1n−1) and PRHT (X₂)=a₂₀,a₂₁, . . . , a_(2n−1) and C₀, C₁, . . . , C_(n−1), C_(n) of P(v)=Σ_(j=0) ^(n)C_(j)·v^(j) (C_(n)=1), and PRHT (X₁)·PRHT (X₂)=r₁₀, r₁₁, . . . , r_(1n−1), the coefficients of the resulting n−1 order polynomial r(v), where r(v)=((Σ_(j=0) ^(n−1)a_(1j)·v^(j))·(Σ_(j=0) ^(n−1)a_(2j)·v^(j)))mod Σ_(j=0) ^(n)C_(j)·v^(j).

Further in accordance with an embodiment of the present invention for X_(i) including MRHT (X_(i))=A_(i) receiving A₁ and A₂, 1/MRHT (X₂)=A₂ ⁻¹ and MRHT (X₁)/MRHT (X₂)=A₁·A₂ ⁻¹ for X_(i) including PRHT (X_(i))=a_(i0), a_(i1), . . . , a_(in−1) receiving PRHT (X₁)=a₁₀, a₁₁, . . . , a_(1n−1) and PRHT (X₂)=a₂₀, a₂₁, . . . , a_(2n−1) and C₀, C₁, . . . , C_(n−1), C_(n) of P(v)=Σ_(j=0) ^(n)C_(j)·v^(j) (C_(n)=1), deriving 1/PRHT(X₂)=u₂₀,u₂₁, . . . , u_(2n−1) by calculating ((Σ_(j=0) ^(n−1)u_(2j)·v^(j)). (Σ_(j=0) ^(n−1)a_(2j)·v^(j)))mod Σ_(j=0) ^(n)C_(j)·v^(j)=1 in terms of n unknown coefficients u_(2j), (j=0, . . . , n−1), thereby determining

Σ_(j=0) ^(n−1) g _(2j)(u ₂₀,u₂₁ , . . . ,u_(2n−1),a₁₀,a₂₁, . . . a_(2n−1),c₁₀,c₂₁, . . . ,c_(2n−1),)·v ^(j)),

wherein g_(2j)( ) is a linear combination of a plurality of n unknowns u_(2j), and solving n derived equations g₂₀( )=1, and g_(2j)( )=0 for j−1 , . . . , n−1 for all u_(2j) j=0, . . . , n−1, and

PRHT(X ₁)/PRHT(X ₂)=PRHT(X ₁)·(1/PRHT(X ₂))=((Σ_(j=0) ^(n−1) a _(1j) ·v ^(j))·(Σ_(j=0) ^(n−1) u _(2j) ·v ^(j)))modΣ_(j=0) ^(n) C _(j) ·v ^(j).

Still further in accordance with an embodiment of the present invention at least one of the randomized inputs comprises a cryptographic key.

Additionally in accordance with an embodiment of the present invention the cryptographic key comprises an AES key.

Moreover in accordance with an embodiment of the present invention the at least one of the randomized inputs comprises a mod N-number polynomial coefficient.

Further in accordance with an embodiment of the present invention the mod N-number polynomial coefficient is used for a Private Function Key Generation.

Still further in accordance with an embodiment of the present invention the mod N-number polynomial coefficient is used for a private hash-based message authentication code.

Moreover in accordance with an embodiment of the present invention the mod N-number polynomial coefficient is used for generating an OSS signature.

Further in accordance with an embodiment of the present invention input includes a plain text, the output includes a cipher text, and all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix S includes symmetric encryption key, wherein the encryption functions are denoted as MEnc and PEnc correspond to MRHT and PRHT, respectively.

Additionally in accordance with an embodiment of the present invention the encryption of the plain text includes a successive application of a mix of encryption functions PEnc=PRHT(X_(i)) and MEnc=MRHT(X_(i)), wherein

$\begin{matrix} {{{MEnc}\left( {{PEnc}\left( X_{i} \right)} \right)} = \left( {{{MEnc}\left( \alpha_{i\; 0} \right)},{{MEnc}\left( \alpha_{i\; 1} \right)},\cdots \mspace{14mu},} \right.} \\ {\left( {{MEnc}\left( \alpha_{{i\; n} - 1} \right)} \right)} \\ {==\left( {\begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix}_{i\; 0},\begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix}_{i\; 1},} \right.} \\ {\left. {{= \cdots}\mspace{14mu},\begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix}_{{i\; n} - 1}} \right),{and}} \end{matrix}$ ${{PEnc}\left( {{MEnc}\left( X_{i} \right)} \right)} = {{PEnc}\left( \begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix} \right)}$ where  PEnc(a_(ij)) = (a₀, a₁, ⋯  , a_(n − 1))_(ij).

Moreover in accordance with an embodiment of the present invention the received output includes a cipher text denoted C, the cipher text C being produced according to the method described hereinabove, and the derandomized input includes a plain text, and all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix S includes symmetric encryption key.

Further in accordance with an embodiment of the present invention for addition of a pair of cipher text outputs Ci and Cj, Ci and Cj comprising cipher texts produced according to the method described herein above, the method comprising adding Ci and Cj as described above wherein all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix S comprises symmetric encryption key.

Still further in accordance with an embodiment of the present invention for multiplication of a pair of cipher text outputs Ci and Cj, Ci and Cj comprising cipher texts produced according to the method described herein above, the method including multiplying Ci and Cj as described above, wherein all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix S includes a symmetric encryption key.

Additionally in accordance with an embodiment of the present invention for division of a pair of cipher texts outputs Ci and Cj, Ci and Cj comprising cipher texts produced according to the method described herein above, the method including dividing Ci and Cj as described above wherein all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix S includes symmetric encryption key.

Moreover in accordance with an embodiment of the present invention for verifying that a returned result of a calculation performed by a third party is valid, the result being performed by the method of any of the above claims, the result being denoted R*_(M) for a result returned using an MRHT or MEnc function denoted as M, and the result being denoted R*_(P) for a result returned using a PRHT or PEnc function denoted as P, the result including a result of a homomorphic calculation denoted f performed on A₁, A₂, . . . , A_(k) wherein A_(i) is equal to one of M(X_(i)) and P(X_(i)), f(A₁, A₂, . . . , A_(k)) is equal to one of M (f(X₁, X₂, . . . , X_(k)))=f(M(X₁), M(X₂), . . . , M(X_(k))) and P(f(X₁, X₂, . . . , X_(k)))=f(P(X₁), P(X₂), . . . , P(X_(k))) the method including receiving the result of f(A₁, A₂, . . . , A_(k)) in the one of the forms

$\begin{matrix} {{M\left( {f\left( {X_{1},X_{2},\cdots \mspace{14mu},X_{K}} \right)} \right)} = S} \\ {{{{\begin{pmatrix} {{f\left( {X_{1},X_{2},\cdots \mspace{14mu},X_{K}} \right)}\cdots} & {0\cdots} & 0 \\ \cdots & \cdots & \cdots \\ {0\cdots} & {{f\left( {Y_{m\; 1},Y_{m\; 2},\cdots \mspace{14mu},Y_{mk}} \right)}\cdots} & 0 \\ \cdots & \cdots & \cdots \\ {0\cdots} & {0\cdots} & {f\left( {Y_{{n - 1},1},Y_{{n - 1},2},\cdots \mspace{14mu},Y_{{n - 1},k}} \right)} \end{pmatrix}S^{- 1}} = R_{M}^{*}},}} \end{matrix}$

and f(A₁, A₂, . . . , A_(k)) in the form of a*₀, a*₁ . . . , a*_(n−1),=R*_(P), in the case where the result is in the form of R*_(M) computing f(Y_(m1), Y_(m2), . . . , Y_(mk)), denoted as Q, for any m, m=1, 2, . . . , n−1 where Y_(mj) includes the m^(th) random value used in one of encrypting, and randomizing X_(j), performing one of decrypting, and derandomizing R*_(M) thereby determining f(Y_(m1), Y_(m2), . . . , Y_(mk)), denoted as E from the resulting matrix diagonal of m+1 row, and deeming the result the of the computation of f(Xi) valid if E equals to Q, and in the case where the result is in the form of R*_(P) computing f(Y_(m1), Y_(m2), . . . , Y_(mk), denoted as Q, for any m, m=1, 2, . . . , n−1 where Y_(mj) includes the m^(th) random value used in one of encrypting, and randomizing X_(j), performing one of decrypting, and derandomizing R*_(P), thereby determining Σ_(j=0) ^(n−1)a*_(j)·ν_(m+1) ^(j)=f(R_(m1), R_(m2), . . . , R_(mk)), denoted as E, and deeming the result the of the computation of f(X₁, X₂, . . . , X_(K)) valid if E equals Q.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will be understood and appreciated more fully from the following detailed description, taken in conjunction with the drawings in which:

FIG. 1 is a simplified depiction of a low security high performance device interacting with a high security low performance device constructed and operative in accordance with an embodiment of the present invention;

FIG. 2 is a depiction of an embodiment of the system of FIG. 1 where a private algorithm and a public input are used; and

FIGS. 3A-3E are data flow diagrams depicting methods for the various embodiments of the system of FIG. 1.

The present invention will be understood and appreciated more fully from the following detailed description, taken in conjunction with the Appendices in which:

Appendix A is a paper published at eprint.iacr.org/2012/637.pdf, entitled Efficient Methods for Practical Fully-Homomorphic Symmetric-key Encryption, Randomization, and Verification, by the inventors of the invention described herein, and which provides a mathematical approach, including proofs, to the method and security described herein.

DETAILED DESCRIPTION OF AN EMBODIMENT

Reference is made to FIG. 1, which is a simplified depiction of a low security high performance device interacting with a high security low performance device constructed and operative in accordance with an embodiment of the present invention.

As noted above, the present provides several embodiments of non-deterministic fully homomorphic methods for:

Practical (highly efficient) fully homomorphic:

-   -   A. Symmetric randomization of any data in a commutative ring,         CR;     -   B. Symmetric Encryption of special data, (mod-N in Z_(N)); and     -   C. Coupling of computations

The present application describes the following embodiments of the present invention:

-   -   Randomization of any data         -   In this case the data and operations are over CR. The             application of the method to the data results in Randomized             and Homomorphic Transformation (RHT) of the data. The result             can be an input to a polynomial function consisting of             additions and multiplications, e.g., AES algorithms that run             within a silicon chip. Application of RHT to the secret AES             key protects against Side Channel Attacks (e.g.,             Differential Power Attack) aimed at revealing the clear             AES-key.     -   Efficient Homomorphic encryption of mod-N numbers in Z_(N)         -   Secure use in open untrusted platforms of both:             -   secrets (symmetric keys); and             -   a family of private algorithms.         -   Examples are a keyed-hash (where the key is secret), and a             Private-Function for Key-Generation (PFKG) whose input is             public (e.g., a broadcast ECM (entitlement control message)             is processed by a secret PFKG running in the STB; or a             comparable component in the smart card). The private             function can be any polynomial with secret coefficients (and             a0=0).         -   Most of the security workload will be carried out by a             low-security host while the homomorphic-encryption key is             kept by a Low-performance High-security component.         -   Enhanced protection for certain algorithms, e.g., securing             OSS (public key) signature from Pollard attacks.     -   Coupling of computations         -   Verification of computational integrity is provided by             utilizing inseparable coupling, i.e., entanglement, of             parallel, multiple independent computations, thereby             providing protection against fault attacks.

I. Definitions

N is a number which is a product of two primes P and Q; (for security reasons P and Q are presumed secret); it is assumed that factoring N into primes is a computationally difficult problem).

The message X to be encrypted consists of a sequence of k modulo N numbers X₁, X₂, . . . X_(m) in Z_(N).

Z_(N) is the ring of residues modulo N.

CR is a commutative ring.

M_(n×n) (Z_(N)) is the ring of n×n matrices over Z_(N).

P(v)=Π_(i=1) ^(n)(v−v_(i))=Σ_(j=0) ^(n)C_(j)·v^(j)(C_(n)=1) over Z_(N) where Z_(N)[v]/P(v) is the polynomial ring mod P(v).

In general, the method uses one X_(i) per method application to allow for computation of (arbitrary) multivariate input in functions whose operations are addition, multiplication and division. However, if, for example, there are two known multivariate functions with two distinct sets of inputs—(X₁, X₂, . . . , X_(h)) and (X_(h+1), X_(h+2), . . . , X_(L)), then no pair of variables in each of the input sets shall be encrypted (or randomized) jointly, i.e., with a single application of the method. In general, the methods discussed herein are discussed under the presumption of one variable.

Additionally, it is appreciated that the method described herein may be run on dedicated software, dedicated hardware, non-dedicated hardware, or some combination thereof. For example, and without limiting the generality of the foregoing, steps which are described herein as “receiving an input” may be operative to run in software which is running on appropriate hardware. Alternatively, the step of receiving an input may be running in a dedicated circuit of a specialized chip. Further alternatively, there may be a hardware based processor which can, for certain operations be utilized to run the steps of “receiving an input”. The same would be true of the other steps described in the various methods and procedures described herein.

II. Fully Homomorphic Randomization of Arbitrary Data

The randomization of arbitrary data over CR is presumed to take place in a secure environment as it is not considered a strong encryption. One of its purposes is to thwart side-channel attacks on algorithm execution to get information on sensitive data such as symmetric cipher keys, e.g., an AES encryption key. Such attacks presume that the secret data, e.g., the key, is static over repeated runs of the AES algorithm to cumulatively glean information of the key and the attack also assumes that the attacker knows the inputs processed by the algorithm (or, alternatively, the outputs produced as the outcome of the algorithm). However, in this non-deterministic approach the randomized-key changes per cipher run thereby foiling such attack. (The inputs to the algorithm are randomized and therefore operations are carried over randomized values. The algorithm manipulates only randomized data and randomized keys, the data manipulated by the algorithm is not exposed outside the boundaries of the secure environment. Data which is exposed outside of the secure environment is data which has already been derandomized according to the methods disclosed herein.)

By way of example, randomization may be useful to thwart side channel attacks, for example, and without limiting the generality of the foregoing, differential power analysis (DPA) attacks. DPA is a concrete example of a side channel attack. DPA requires interaction between unknown key-bits and known data-bits. The attacker chooses and inputs the data bits into the cipher, and learns about their interaction with the key-bits by measuring the electrical current that the enciphering device consumes. Then by using statistical methods, the attacker can retrieve the key-bits previously unknown to him.

Randomization may also be useful against fault attacks. Fault attacks rely on the attacker's ability to induce a fault into the cryptographic computation. Then the attacker observes the results of the faulty computation, compares it to the results of non-faulty computations and attempts to deduce the value of unknown key-bits.

Randomized and homomorphic transformation (RHT)—is a transformation T (and its inverse T⁻¹) which allows simple operations (e.g., addition, multiplication) on transformed data. The transformation is randomized since it takes an input value, appends to it random data, and then applies the transformation to it. The transformation is referred to as ‘homomorphic’ because it allows operations in the transformed domain (although the operations themselves are also transformed). Consider an input value X, then T(X, r) randomizes X with r, and transforms it. RHT should satisfy:

X+Y=T ⁻¹(T(X,r1)+T(Y,r2))

and

X*Y=T ⁻¹(T(X,r1)*T(Y,r2)).

In an embodiment of the present invention for countering side channel attacks by using the randomization property of RHT, the homomorphic property provides for secure and efficient protection as there is no need to successively remove errors due to computation with randomized data.

Additionally RHT computes two or more values in a single inseparable step (i.e. any impact on one of the values will perforce impact the second value).

Furthermore, fault attacks may be countered using the computational coupling of RHT:

-   -   RHT can be done for a homomorphic evaluation of a function         requiring a secure environment for its execution; and     -   RHT can be applied for a homomorphic algorithm that requires no         secure execution. The main application is for the data to be         randomized, i.e., statistically ‘flattened’.

Therefore, for all computations are over CR, the method of fully homomorphic randomization of arbitrary data comprises: receiving an input denoted X comprising a sequence of k input elements X₁, X₂, X₃, . . . , X_(i), . . . , X_(k) in CR and then performing one of the following:

Matrix Method

-   -   The most generalized statement of the matrix method is:     -   An input, denoted INP, is received. INP comprises a sequence of         k input elements in CR.     -   A secret n×n matrix is selected in CR, the matrix hereinafter         being denoted S, wherein S is utilized as a symmetric         randomizing key. S comprises an invertible matrix over CR. S⁻¹         is determined.

For each set i of m distinct input elements wherein 0<m<k+1 and m<n selected from INP that are to be jointly randomized, and denoted hereinafter as X_(i1), X_(i2), . . . , X_(im), wherein X_(i1), X_(i2), . . . , X_(im) comprise any subset of input elements X₁, X₂, X₃, . . . , X_(i), . . . , X_(k). For ease of discussion, the input elements discussed hereinafter are denoted as X₁, X₂, X₃, . . . X_(m).

Additionally, n−m (n minus m) random numbers Y₁, Y₂, . . . Y_(n−m), are selected in CR for each input set of i of m distinct elements, where the input elements X₁, X₂, . . . , X_(m) and random numbers Y₁, Y₂, . . . Y_(n−m) are placed in order on the diagonal of a n×n diagonal matrix:

$\begin{pmatrix} X_{1} & 0 & \; & \; & \cdots & \cdots & \cdots & 0 \\ 0 & X_{2} & 0 & \; & \; & \; & \cdots & \vdots \\ \vdots & 0 & \ddots & 0 & \; & \cdots & \; & \; \\ \; & \; & \ddots & X_{m} & \; & 0 & \cdots & \; \\ \; & \; & \; & 0 & Y_{1} & \ddots & \cdots & 0 \\ \; & \vdots & \; & \vdots & 0 & Y_{2} & 0 & \; \\ \; & \; & \; & \; & \vdots & \ddots & \ddots & 0 \\ 0 & 0 & \; & \cdots & \; & \; & 0 & Y_{n - m} \end{pmatrix}\quad$

Random output A_(im) is determined for the m input elements in set i denoted as {X_(im)}=X₁, X₂, . . . , X_(m), by utilizing a matrix-based randomizing and homomorphic transformation function hereinafter denoted MRHT, wherein:

$\begin{matrix} {{{MRHT}\left( \left\{ X_{im} \right\} \right)} = {A_{im}\quad}} \\ {= {{S\begin{pmatrix} X_{1} & 0 & \; & \; & \cdots & \cdots & \cdots & 0 \\ 0 & X_{2} & 0 & \; & \; & \; & \cdots & \vdots \\ \vdots & 0 & \ddots & 0 & \; & \cdots & \; & \; \\ \; & \; & \ddots & X_{m} & \; & 0 & \cdots & \; \\ \; & \; & \; & 0 & Y_{1} & \ddots & \cdots & 0 \\ \; & \vdots & \; & \vdots & 0 & Y_{2} & 0 & \; \\ \; & \; & \; & \; & \vdots & \ddots & \ddots & 0 \\ 0 & 0 & \; & \cdots & \; & \; & 0 & Y_{n - m} \end{pmatrix}}S^{- 1}}} \\ {= \begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix}} \end{matrix}$

thereby producing a random output A_(im) corresponding to the i set of m input elements {X_(im)}=X₁, X₂, . . . , X_(m).

Those skilled in the art will appreciate that trivial variations of the matrix (denoted M):

$M = {\begin{pmatrix} X_{1} & 0 & \; & \; & \cdots & \cdots & \cdots & 0 \\ 0 & X_{2} & 0 & \; & \; & \; & \cdots & \vdots \\ \vdots & 0 & \ddots & 0 & \; & \cdots & \; & \; \\ \; & \; & \ddots & X_{m} & \; & 0 & \cdots & \; \\ \; & \; & \; & 0 & Y_{1} & \ddots & \cdots & 0 \\ \; & \vdots & \; & \vdots & 0 & Y_{2} & 0 & \; \\ \; & \; & \; & \; & \vdots & \ddots & \ddots & 0 \\ 0 & 0 & \; & \cdots & \; & \; & 0 & Y_{n - m} \end{pmatrix}\quad}$

such as:

-   -   dispersing constants among the values on the diagonal; and     -   changing the order (i.e. intermixing the X_(i)s and the Y_(i)s),         will not change the basic method as defined herein. By way of         example, and without limiting the generality of the foregoing,         the following may all be exemplary trivial variations of the         matrix:     -   The diagonal is: X₁, X₂, . . . X_(m), 0, Y₁, Y₂, . . . Y_(m).     -   The diagonal is: X₁, 0, X₂, 0, . . . X_(m), 0, Y₁ , 0, Y ₂ , 0,         . . . Y _(m), 0.     -   The diagonal is: X₁, Y₁, X₂, Y₂, . . . X_(m), Y_(m).

Additionally, adding rows and columns with zeros around the matrix diagonal, i.e.:

$\begin{pmatrix} X_{1} & 0 & \; & \cdots & \cdots & \cdots & \; & 0 \\ 0 & X_{2} & 0 & \; & \; & \cdots & \; & \vdots \\ \vdots & 0 & \ddots & 0 & \; & \cdots & \; & \; \\ \; & \; & \ddots & X_{m} & \; & 0 & \cdots & \; \\ \; & \; & \; & 0 & Y_{1} & \ddots & \cdots & 0 \\ \; & \vdots & \; & \vdots & 0 & \ddots & 0 & \; \\ \; & \; & \; & \; & \vdots & \ddots & Y_{n - m} & 0 \\ 0 & 0 & \; & \cdots & \; & \; & 0 & 0 \end{pmatrix}\quad$

would also be a trivial variation which will not change the basic method as defined herein.

-   -   A less generalized statement of the matrix method is:     -   for each input element X_(i), selecting n−1 random numbers Y₁,         Y₂, . . . Y_(n−1), in CR, where the input element X_(i) and         random numbers Y₁, Y₂, . . . Y_(n−1) are placed in order on the         diagonal of a n×n diagonal matrix;

a secret n×n matrix in CR is randomly chosen, the secret n×n matrix hereinafter denoted as S, S being utilized as a symmetric randomizing key,

wherein S comprises an invertible matrix over CR;

determining S⁻¹; and

-   -   a random output A_(i) is determined for input element X_(i) by         utilizing a matrix-based randomizing and homomorphic         transformation function,

method hereinafter denoted MRHT, wherein:

$\begin{matrix} {{{MRHT}\left( X_{i} \right)} = A_{i}} \\ {= {{S\begin{pmatrix} {X_{i}\cdots} & {0\cdots} & 0 \\ \cdots & \cdots & \cdots \\ {0\cdots} & {Y_{i}\cdots} & 0 \\ \cdots & \cdots & \cdots \\ {0\cdots} & {0\cdots} & Y_{n - 1} \end{pmatrix}}S^{- 1}}} \\ {= \begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix}} \end{matrix}$

-   -   thereby producing a random output A_(i) corresponding to input         element X_(i) .

It is appreciated that the above method may be generalized. Instead of selecting n−1 random numbers Y₁, Y₂, . . . Y_(n−1), in CR for an input element X_(i), for a set of m (where 1≦m≦k; and m<n) input elements, n−m random numbers Y₁, Y₂, . . . Y_(n−m) are selected.

Polynomial Method

-   -   The most generalized statement of the polynomial method is:     -   n random numbers in CR are selected, the n random numbers         hereinafter denoted as v₁, v₂, . . . , v_(n);     -   a public polynomial P(v)=Π_(i=1) ^(n)(v−v_(i))=Σ_(j=0)         ^(n)C_(j)·v^(j) C_(n)=1) is determined;     -   for each set i of m distinct input elements wherein 0<m<k+1 and         m<n selected from INP that are to be jointly randomized, and         denoted hereinafter as X_(i1), X_(i2), . . . , X_(im), wherein         X_(i1), X_(i2), . . . , X_(im) comprise any subset of input         elements X₁, X₂, X₃, . . . , X_(i), . . . , X_(k). For ease of         discussion, the input elements discussed hereinafter are denoted         as X₁, X₂, X₃, . . . , X_(m);     -   a polynomial-based randomizing and homomorphic transformation         function hereinafter denoted PRHT (X₁, X₂, X₃, . . . , X_(m)) is         selected, comprising any function in variable v of the form         Σ_(j=0) ^(n−1)a_(ij)·v^(j) which satisfies the equation

Σ_(j=9) ^(n−1) a _(ij) ·v ₁ ^(j) =X ₁,Σ_(j=0) ^(n−1) a _(ij) ·v ₂ ^(j) =X ₂. . . , Σ_(j=0) ^(n−1) a _(ij) ·v _(m) ^(j) =X _(m);

-   -   n−m (n minus m) random values are chosen in CR, for a_(i,m),         a_(i,m+1) . . . , a_(i,n−1), that would yield a solution for the         above equations for a_(i,0), a_(i,1) . . . , a_(i,m-1); then one         of the following is performed:         -   a random output A_(im) corresponding to input elements X₁,             X₂, . . . , X_(m) is produced wherein A_(im) comprises             comprising the set (a_(i0), a_(i1), . . . , a_(in−1)) and             public set of coefficients (C₀, C₁, . . . , C_(n−1), C_(n))             of P(v), wherein the set of coefficients (C₀, C₁, . . .             C_(n−1), C_(n)) are required for arithmetic performing             operations with input elements; and         -   for the given input elements X₁, X₂, . . . , X_(m), n−m (n             minus m) random values R₁, . . . , R_(n−m) are selected in             CR that would solve the following n simultaneous equations:

Σ_(j=0) ^(n−1) a _(ij) ·v ₁ ^(j) =X ₁,Σ_(j=0) ^(n−1) a _(ij) ·v ₂ ^(j) =X ₂, . . . ,Σ_(j=0) ^(n−1) a _(ij) ·v _(m) ^(j) =X _(m),Σ_(j=0) ^(n−1) a _(ij) ·v _(m+1) ^(j) =R ₁,

Σ_(j=0) ^(n−1) a _(ij) ·v _(m+2) ^(j) =R ₂, . . . , Σ_(j=0) ^(n−1) a _(ij) ·v _(n) ^(j) =R _(n−m)

for unknowns a_(i0), a_(i1), . . . a_(in−1), thereby producing, for X₁, X₂, . . . X_(m) a random text comprising the set (a_(i0), a_(i1), . . . , a_(in−1)) and public set (C₀, C₁, . . . , C_(n−1), C_(n)) of P(v).

-   -   A less generalized statement of the polynomial method is:     -   n random numbers in CR are selected, the n random numbers         hereinafter denoted as v₁, v₂, . . . , v_(n);     -   a public polynomial P(v)=Π_(t=1) ^(n)(v−v_(i))=Σ_(j=0)         ^(n)C_(j)·v^(j) (C_(n)=1) is determined;     -   a polynomial-based randomizing and homomorphic transformation         function hereinafter denoted PRHT (X_(i)) is selected,         comprising any function in variable v of the form Σ_(j=0)         ^(n−1)a_(ij)·v^(j) which satisfies the equation

Σ_(j=0) ^(n−1) a _(ij) ·v ₁ ^(j) =X _(i);

-   -   n−1 random values in CR are chosen, for a_(i1), a_(i2), . . . ,         a_(in−1), of X_(i) thereby determining a_(i0)=X_(i)−Σ_(j=1)         ^(n−1)a_(ij)·v_(v) ^(j); and     -   a randomized output corresponding to input element X₁ is         produced, the random output comprising the set (a_(i0), a_(i1),         . . . , a_(in−1)) and public set of coefficients (C₀, C₁, . . .         , C_(n−1), C_(n)) of P(v), wherein the set of coefficients (C₀,         C₁, . . . , C_(n−1), C_(n)) are required for arithmetic         performing operations with the input element X_(i);     -   or, alternatively,     -   selecting n−1 random values R_(i1), . . . , R_(in−1) in CR for         the given X_(i) and solving n simultaneous equations:

Σ_(j=0) ^(n−1) a _(ij) ·v ₁ ^(j) =X _(i),Σ_(j=0) ^(n−1) a _(ij) ·v ₂ ^(j) =R _(i1), . . . ,Σ_(j=0) ^(n−1) a _(ij).

v_(n) ^(j)=R_(in−1) for unknowns a_(i0), a_(i1), . . . , a_(in−1), thereby producing, as above, for X_(i) a randomized text comprising the set (a_(i0), a_(i1), . . . , a_(in−1)) and public set (C₀, C₁, . . . , C_(n−1), C_(n)) of P(v).

By way of example, the input X is transformed into a 2×2 matrix M[x] as follows (S is a random, invertible matrix):

${M\lbrack X\rbrack} = {{S\begin{pmatrix} X & 0 \\ 0 & Y \end{pmatrix}}S^{- 1}}$

where the element Y(≠0) can be selected at random or selected to be a predefined value. Elements are added by matrix addition and multiplied by matrix multiplication. Note that popular cryptographic primitives such as the AES cipher can be easily expressed and calculated over the transformed elements described above, for example, and without limiting the generality of the foregoing, take the CR to be F₂₅₆ the extension field of degree eight over the field with two elements F₂ and express the AES operations as an algebraic operation over F₂₅₆. Note, however, that the actual, final result of the AES cipher must be extracted from the transformed elements (i.e., the matrices). This is done by decrypting the resulting matrix (i.e., multiplying M[x] by S⁻¹ from the left and by S from the right), and taking the upper left value as the actual resulting AES cipher text.

Countering DPA: When using a randomized transformation (i.e., Y is selected at random) for a cipher such as AES, the randomization is applied to both inputs—the key elements and the text elements. Since the attacker does not know the exact value of his transformed data elements (as they were randomized under the scheme), DPA can no longer work.

Countering fault attacks: The scheme has the property that it turns every operation on elements into an extended inseparable calculation over 2×2 matrices. Therefore by inserting specific pre-defined values for Y, one can verify that a computation like the AES cipher was carried out correctly without faults. This is done, e.g., by applying the matrix method with the preset Y, and then comparing the results in position Y to the expected result.

It is appreciated that the randomization of the input X comprises a successive application of a mix of functions PRHT(X_(i)) and MRHT(X_(i)), wherein: the randomization of the input X comprises a successive application of a mix of functions PRHT(X_(i)) and MRHT(X_(i)), wherein:

$\begin{matrix} {{{MRHT}\left( {{PRHT}\left( X_{i} \right)} \right)} = \left( {{{MRHT}\left( \alpha_{i\; 0} \right)},{{MRHT}\left( \alpha_{i\; 1} \right)},\cdots \mspace{14mu},} \right.} \\ {\left( {{MRHT}\left( \alpha_{{i\; n} - 1} \right)} \right.} \\ {==\left( {\begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix}_{i\; 0},\begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix}_{i\; 1},} \right.} \\ {\left. {{= \cdots}\mspace{14mu},\begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix}_{{i\; n} - 1}} \right);{and}} \end{matrix}$ ${{PRHT}\left( {{MRHT}\left( X_{i} \right)} \right)} = {{PRHT}\left( \begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \cdots & a_{nn} \end{pmatrix} \right)}$ where  PRHT(a_(pj)) = (a_(i 0), a_(i 1), ⋯  , a_(i n − 1))_(pj),

therefore (bearing in mind that the index i of X_(i) and in a_(i0), a_(i1), . . . , a_(in−1) should not be confused with the index i in a_(ij)):

${{PRHT}\left( {{MRHT}\left( X_{i} \right)} \right)} = {\begin{pmatrix} \left( {a_{i\; 0},a_{i\; 1},\cdots \mspace{14mu},a_{{i\; n} - 1}} \right)_{11} & \cdots & \left( {a_{i\; 0},a_{i\; 1},\cdots \mspace{14mu},a_{{i\; n} - 1}} \right)_{1n} \\ \vdots & \ddots & \vdots \\ \left( {a_{i\; 0},a_{i\; 1},\cdots \mspace{14mu},a_{{i\; n} - 1}} \right)_{n\; 1} & \cdots & \left( {a_{i\; 0},a_{i\; 1},\cdots \mspace{14mu},a_{{i\; n} - 1}} \right)_{nn} \end{pmatrix}.}$

Derandomizing the Randomized Input

One of the following is performed:

Matrix Method

-   -   To derandomize a randomized input produced according to the most         generalized matrix method of randomization given above:     -   an output comprising a randomized set of inputs, {X_(im)}=X₁,         X₂, . . . , X_(m), is received, the input being an n×n diagonal         matrix denoted hereinafter as A_(im), over CR, where:

$\begin{matrix} {A_{im} = {{MRHT}\left( X_{im} \right)}} \\ {= {{S\begin{pmatrix} X_{1} & 0 & \; & \; & \ldots & \ldots & \ldots & 0 \\ 0 & X_{2} & 0 & \; & \; & \; & \ldots & \vdots \\ \vdots & 0 & \ddots & 0 & \; & \ldots & \; & \; \\ \; & \; & \ddots & X_{m} & \; & 0 & \ldots & \; \\ \; & \; & \; & 0 & Y_{1} & \ddots & \ldots & 0 \\ \; & \vdots & \; & \vdots & 0 & Y_{2} & 0 & \; \\ \; & \; & \; & \; & \vdots & \ddots & \ddots & 0 \\ 0 & 0 & \; & \ldots & \; & \; & 0 & Y_{n - m} \end{pmatrix}}S^{- 1}}} \\ {= \begin{pmatrix} a_{11} & \ldots & a_{1\; n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \ldots & a_{nn} \end{pmatrix}} \end{matrix}$

-   -   S is used determine

$S^{- 1} = \begin{pmatrix} s_{11}^{\prime} & \ldots & s_{1\; n}^{\prime} \\ \vdots & \ddots & \vdots \\ s_{n\; 1}^{\prime} & \ldots & s_{nn}^{\prime} \end{pmatrix}$

and determining X_(im)

-   -   Then, the following is performed:

${S^{- 1} \cdot A_{i} \cdot S} = \begin{pmatrix} X_{1} & 0 & \; & \; & \ldots & \ldots & \ldots & 0 \\ 0 & X_{2} & 0 & \; & \; & \; & \ldots & \vdots \\ \vdots & 0 & \ddots & 0 & \; & \ldots & \; & \; \\ \; & \; & \ddots & X_{m} & \; & 0 & \ldots & \; \\ \; & \; & \; & 0 & Y_{1} & \ddots & \ldots & 0 \\ \; & \vdots & \; & \vdots & 0 & Y_{2} & 0 & \; \\ \; & \; & \; & \; & \vdots & \ddots & \ddots & 0 \\ 0 & 0 & \; & \ldots & \; & \; & 0 & Y_{n - m} \end{pmatrix}$

where X₁, X₂, . . . , X_(m) is in the upper left element of the matrix,

Equivalently the following formula can be used for more efficient computation to determine

X _(i)=(1/s′ _(i1))·Σ_(j=1) ^(n) a _(j1) ·s′ _(ij) for i=1, . . . m.

-   -   To derandomize a randomized input produced according to the less         generalized statement of the matrix method given above:     -   An output comprising a randomized X_(i), and the input being an         n×n diagonal matrix denoted hereinafter as A_(i), over Z_(N),         where:

$\begin{matrix} {A_{i} = {{MRHT}\left( X_{i} \right)}} \\ {= {{S\begin{pmatrix} {X_{i}\mspace{14mu} \ldots} & {0\mspace{14mu} \ldots} & 0 \\ \ldots & \ldots & \ldots \\ {0\mspace{14mu} \ldots} & {Y_{l}\mspace{14mu} \ldots} & {0\;} \\ {\ldots \;} & {\ldots \;} & {\; \ldots} \\ {\; {0\mspace{14mu} \ldots}} & {\; {0\mspace{14mu} \ldots}} & Y_{n - 1} \end{pmatrix}}S^{- 1}}} \\ {= \begin{pmatrix} a_{11} & \ldots & a_{1\; n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \ldots & a_{nn} \end{pmatrix}} \end{matrix}$

-   -   S is used to determine

$S^{- 1} = \begin{pmatrix} s_{11}^{\prime} & \ldots & s_{1\; n}^{\prime} \\ \vdots & \ddots & \vdots \\ s_{n\; 1}^{\prime} & \ldots & s_{nn}^{\prime} \end{pmatrix}$

-   -   Xi is determined by performing one of:

${S^{- 1} \cdot A_{i} \cdot S} = \begin{pmatrix} {X_{i}\mspace{14mu} \ldots} & {0\mspace{14mu} \ldots} & 0 \\ \ldots & \ldots & \ldots \\ {0\mspace{14mu} \ldots} & {Y_{l}\mspace{14mu} \ldots} & {0\;} \\ {\ldots \;} & {\ldots \;} & {\; \ldots} \\ {\; {0\mspace{14mu} \ldots}} & {\; {0\mspace{14mu} \ldots}} & Y_{n - 1} \end{pmatrix}$

where X_(i) is the upper left element of the matrix, thereby determining X_(i)=a₁₁+(1/s′₁₁). Σ_(j=2) ^(n)a_(j1)·s′_(1j); and

X _(i)=(1/s′ ₁₁)·Σ_(j=1) ^(n) a _(j1) ·s′ _(1j).

Polynomial Method

To derandomize a randomized input produced according to the most generalized polynomial method of randomization given above:

The randomized output for {X_(i)} is received as (a_(i0), a_(i1), . . . , a_(in−1)) and v₁ . . . v_(m), are used to determine the derandomized input Σ_(j=0) ^(n−1)a_(ij)·v₁ ^(j)=X₁, Σ_(j=0) ^(n−1)a_(ij)·v₂ ^(j)=X₂, . . . , Σ_(j=0) ^(n−1)a_(ij)·v_(m) ^(j)=X_(m).

To derandomize a randomized input produced according to the less generalized statement of the polynomial method given above:

The randomized output for X_(i) is received as (a_(i0), a_(i1), . . . , a_(in−1)) and v₁, is used to determine the derandomized input X_(i)=Σ_(j=0) ^(n−1)a_(ij)·v₁ ^(j).

Arithmetic Property of Fully Homomorphic Operations

Because the above methods are fully homomorphic, both additive and multiplicative properties are satisfied.

Additive Homomorphism:

RHT ⁻¹(RHT(x)+RHT(y))=RHT ⁻¹(RHT(x+y))=x+y   (1)

Multiplicative Homomorphism:

RHT ⁻¹(RHT(x)·RHT(y))=RHT ⁻¹(RHT(x+y))=x+y   (2)

In addition, the methods above are homomorphic for a division operation:

RHT ⁻¹(RHT(x)/RHT(y))=RHT ⁻¹(RHT(x·y))=x·y   (3)

Addition and multiplication of randomized values are defined by the addition and multiplication, respectively, of the corresponding matrices and polynomials.

Matrix Method

Addition and multiplication of randomized values are defined by the addition and multiplication, respectively, of the corresponding A matrices,

for X_(i) comprising MRHT (X_(i))=A_(i:)

MRHT(X ₁)+MRHT(X ₂)=A ₁ +A ₂;

and

MRHT(X ₁)·MRHT(X ₂)=A ₁ ·A ₂.

For division, if X₂≠0 and MRHT⁻¹(MRHT(X₂)≠0, then MRHT(X₁/X₂) is calculated by MRHT(X₁)·(MRHT(X₂))⁻¹=A₁·A₂ ⁻¹

1/MRHT(X ₂)=A ₂ ⁻¹

and

MRHT(X ₁)/MRHT(X ₂)=A ₁ ·A ₂ ⁻¹

Polynomial Method

Addition and multiplication of randomized values are defined by the addition and multiplication, respectively, of the corresponding linear functions in Z_(N)[v]/P(v).

Given PRHT(X₁)=(m₁;d₁), PRHT(X₂)=(m₂;d₂) and P(v)=v²bv+c, then for:

Addition: PRHT(X ₁)+PRHT(X ₂)=(m ₁ +m ₂ ;d ₁ +d ₂);

and

Multiplication: PRHT(X ₁)·PRHT(X ₂)=((m ₁ ·d ₂ +m ₂·(d ₁ −b·m ₁));(d ₁ −d ₂ −c·m ₁ ·m ₂))

Note, (PRHT(X ₁))²=(m ₁·(2d ₁ −b·m ₁);(d ₁ +√{square root over (c)}·m ₁)·(d ₁ −√{square root over (c)}·m ₁))

PRHT(X ₁)=a ₁₀ ,a ₁₁ , . . . ,a _(1n−1) and PRHT(X ₂)=a ₂₀ ,a ₂₁ , . . . ,a _(2n−1)and C ₀ ,C ₁ , . . . , C _(n−1) ,C _(n) of P(v)=Σ_(j=0) ^(n) C _(j) ·v ^(j)(C _(n)=1);

and

PRHT(X ₁)+PRHT(X ₂)=a ₁₀ +a ₂₀ ,a ₁₁ +a ₂₁ , . . . ,a _(1n−1) +a _(2n−1)

For division, let D=(m ₂)² ·c−d ₂·(m ₂ ·b+d ₂)

PRHT(X ₁)/PRHT(X ₂)=((m ₁·(d ₂ −m ₂ ·b)−m ₂·(d ₁ −b·m ₁))/D;(d ₁·(d ₂ −m ₂ ·b)+c·m ₁ ·m ₂)/D)

Therefore, for PRHT (X₁)=a₁₀, a₁₁. . . , a_(1n−1) and PRHT (X₂)=a₂₀, a₂₁, . . . , a_(2n−1) and C₀, C₁, . . . , C_(n−1), C_(n) of P(v)=Σ_(j=0) ^(n)C_(j)·v^(j)(C_(n)=1), can be determined 1/PRHT(X₂)=u₂₀, u₂₁, . . . , u_(2n−1) by calculating ((Σ_(j=0) ^(n−1)u_(2j)·v^(j))·(Σ_(j=0) ^(n−1)a_(2j)·v^(j)))mod Σ_(j=0) ^(n)C_(j)·v^(j) in terms of n unknown coefficients u_(2j), (j=0, . . . , n−1), thereby determining

$\sum\limits_{j = 0}^{n - 1}\; {g_{2\; j}\left( {u_{20},u_{21},\ldots \mspace{14mu},u_{{2\; n} - 1},} \right.}$

a₁₀, a₂₁, . . . , a_(2n−1), c₁₀,c₂₁, . . . , c_(2n−1,))·v^(j)) wherein g_(2j)( ) is a linear combination of a plurality of n unknowns u_(2j); and

-   -   solve the system of n derived equations g₂₀( )=1, and g_(2j)(         )=0 for j=1, . . . , n−1 for all u_(2j) j=0, . . . , n−1; and

PRHT(X ₁)/PRHT(X ₂)=PRHT(X ₁)·(1/PRHT(X ₂))=((Σ_(j=0) ^(n−1) a _(1j) ·v ^(j))·(Σ_(j=0) ^(n−1) u _(2j) ·v ^(j)))modΣ_(j=0) ^(n) c _(j) ·v ^(j).

III. Fully Homomorphic Encryption of Mod-N Numbers

The plain text X is a sequence of k modulo N elements X₁, X₂, . . . X_(k).

Both the matrix-based method and polynomial-based method are equivalent in their utility but some implementation and performance differences exist.

Only one modular multiplication is required for encryption and decryption of the polynomial method where encryption using the matrix method requires more multiplications.

It is appreciated that the method of encryption is a special case of the fully homomorphic randomization of arbitrary data method described above. In the encryption of a mod-N number, the input comprises a plain text, the output comprises a cipher text, and all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix S comprises symmetric encryption key. Encryption functions MEnc (Matrix method Encryption) and PEnc (Polynomial method Encryption) correspond to MRHT and PRHT, respectively. It is appreciated that N need not necessarily be a product of two prime numbers as discussed above, and any N may be used. For security reasons, however, it is preferably that N be a product of two prime numbers (as noted above). Alternatively, P and Q may be any numbers, provided that P and Q are approximately as large as the square root of N, and thus, security considerations will be satisfied.

Matrix Method

By way of example, consider a case where the nxn matrix is a 2×2 matrix where one input element X_(i) is the plaintext and one corresponding random value Y_(i) is selected, and a secret randomly chosen 2×2 matrix denoted S over Z_(N) is selected to be the symmetric encryption key. S is selected to be an invertible matrix over Z_(N), that is Det(S)≠0.

S⁻¹ is then determined

The encryption of X is defined over its components X_(i) as follows: Enc(X)=(Enc(X₁), . . . , Enc(X_(k))).

Encryption of Xi is defined as follows:

${A_{i} = {{{Enc}\left( X_{i} \right)} = {{S\begin{pmatrix} X_{i} & 0 \\ 0 & Y_{i} \end{pmatrix}}S^{- 1}}}},$

where all operations are mod N.

The encryption function yields A_(i), the cipher text for input element X_(i); A_(i) is a 2×2 matrix over Z_(N).

Polynomial Method

By way of example, consider a case where the polynomial is a quadratic equation. Two mod N secret random numbers, v1 and v2 are selected. The public polynomial P(v)=(v−v1)·(v−v2) mod N=v²+b·v+c is computed. Encryption of X_(i)Enc (Xi), is any linear function in variable v of the form m_(i)·v+d_(i) satisfying m_(i)·v₁+d_(i) X_(i).

A number mod N random for the m; value is selected. The linear equation m_(i)·v₁+d_(i)=X_(i) for d_(i=)X_(i)−m_(i)·v₁ is solved. It is appreciated that all calculations are mod N. The cipher text consists of the pair (m_(i), d_(i)) and b and c, the coefficients of P(v).

Alternatively, a random Y_(i) is selected for a given X_(i). The following simultaneous equations are solved for unknowns m_(i) and d_(i):

m _(i) ·v ₁ +d _(i) =X _(i);

and

m _(i) ·v ₂ +d _(i) =Y _(i)

The result: m_(i)=(X_(i)−Y_(i))/(v1−v2), and d_(i)=X_(i)−m_(i)·v₁=(Y_(i)·v₁−X_(i)·v₂)/(v₁−v₂) is the plain text.

It is appreciated that the alternative is computationally heavier than the first alternative embodiment, and is useful when Yi is needed independent-of and well-ahead of Xi.

It is appreciated that the methods described above for combining the matrix and polynomial randomization methods above are applicable to the encryption method herein, as it was noted, the method of encryption is a special case of the fully homomorphic randomization of arbitrary data method.

Decryption

The derandomization method detailed above is performed, however, the received output comprises a cipher text denoted C, the cipher text C being produced according to the encryption method above, and the derandomized input comprises a plain text, and all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix S comprises symmetric encryption key. Only one modular multiplication is required.

Matrix Method

To decrypt the encryption using the exemplary 2×2 matrix above where the cipher text A is 2×2 diagonal matrix over Z_(N), let the vector (1, e) be an eigenvector of the matrix:

$A = {{S\begin{pmatrix} X & 0 \\ 0 & Y \end{pmatrix}}S^{- 1}}$

satisfying: (1, e)A=(X , e·X).

Decrypt A as follows:

X=A_(1,1)+e·A_(2,1) (Mod N) where e=(−S₁₂/S₂₂)mod N, and A_(ij) and S_(ij) are the ij elements of matrix S and A, respectively.

Polynomial Method

The cipher text of Xi is the pair (m_(i), d_(i)) (representing the linear function m_(i)v+d_(i)). The decryption of the cipher text is as follows: m_(i)·v₁+d_(i)=X_(i).

It is appreciated that because the above encryption methods are fully homomorphic, the additive, multiplicative, and divisive properties described above are satisfied.

Security in Open Untrusted Platforms

For remote computing in an untrusted platform three cases defining the secrets in a model of an input and function (algorithm) are considered:

-   a. Only the input is private (not the algorithm)—The algorithm is     characterized as a public polynomial whose input is     homomorphically-encrypted data as in a keyed-hash where only the key     is secret. In general the computed polynomial may have a     multivariate input -   b. Only the algorithm is private (not the input)—The algorithm is     characterized by a polynomial with some of the polynomial's     coefficients are mod N-numbers secrets and the input is public. An     example as mentioned above could be a PFKG (Private Function Key     Generation) whose input is a public ECM used in broadcast CA     systems. Yet another similar example is a private HMAC (hash-based     message authentication code) depicted in FIG. 2, which is a     depiction of an embodiment of the system of FIG. 1 where a private     algorithm and a public input are used, a polynomial with mod N     homomorphic-encrypted coefficients. The HMAC securely runs on an     open machine; the last step in its process is delivered to the     secure client for verification. -   c. Both the algorithm and input are private—Neither the algorithm     nor its input are known to the processing entity. (Note that both     the algorithm and its input must be encrypted with the same     homomorphic-encryption key known by the entity that is authorized to     know the input and the algorithm).

Such untrusted platform could be a public (open) cloud server, a set top box host, a mobile phone ACPU (application central processing unit), etc.; the decryption of the result is done by the secure client, e.g., smart card, SIM, RFID, or secure execution environment with secure OTP (one-time programmable memory) of a low performance device.

Enhanced Protection for Certain Algorithms—Securing OSS Signature against Pollard Attacks

The Original OSS (Ong, Schnorr, Shamir) scheme is a signature scheme based on a modular equation with two variables.

The following two variables modular equation is given: X²−μY²=M (mod N) wherein the public key consists of (μ, N)

The private key ε is the square root μ modulo N ε²=μ (mod N).

A signature of a message is a pair (X,Y) satisfying the above equation where M is the hash of the message.

One who knows ε can find a solution for the equation.

A random value r modulo N is selected, which defines X and Y as follows:

${X = {\frac{1}{2}\left( {r + \frac{M}{r}} \right)}};{Y = {\frac{1}{2ɛ}{\left( {r - \frac{M}{r}} \right).}}}$

The OSS scheme is considered very efficient for the signer and the verifier.

OSS Signing requires 3 modular multiplications and one modular division, and verification requires 3 modular multiplications.

OSS Signing was, however, broken by Pollard, who presented an algorithm for finding solutions for the equation without having to know the factorization of N or the value of e.

A modification of the original OSS scheme based on the above modulo-N Homomorphic Encryption scheme is herein described.

Consider two modular equations:

X ₁ ² −μ ₁ Y ₁ ² =M ₁(mod N)

and

X ₂ ²−μ₂ Y ₂ ² =M ₂(mod N)

The values μ₁, μ₂ are secret. A random invertible 2×2 matrix S and define

$U = {{S\begin{pmatrix} \mu_{1} & 0 \\ 0 & \mu_{2} \end{pmatrix}}S^{- 1}}$

is selected to be the public key.

The private key is the matrix S and values ε₁, ε₂ the square roots of μ₁, μ₂ respectively.

To sign a message, the hash of the message is calculated and a matrix M in the dimension 2 subspace of matrices that commute with U is selected. M has the form

$M = {{S\begin{pmatrix} M_{1} & 0 \\ 0 & M_{2} \end{pmatrix}}{S^{- 1}.}}$

M₁ and M₂ are calculated (calculation of M₁ and M₂ require 2 modular multiplications) and two random modulo N numbers r₁, r₂ are selected. The values X₁, X₂, Y₁, Y₂ that solve the two modular equations with M₁ and M₂ are found and as in the original OSS.

The matrices A and B are defined:

${A = {{S\begin{pmatrix} X_{1} & 0 \\ 0 & X_{2} \end{pmatrix}}S^{- 1}}},{B = {{S\begin{pmatrix} Y_{1} & 0 \\ 0 & Y_{2} \end{pmatrix}}{S^{- 1}.}}}$

The signature is the matrices pair (A, B). The matrices A and B commutes with U, The subspace of all matrices that commutes with U has dimension 2, only two parameters of A and two parameters of B are required for the signature (total of 4 modulo N numbers).

The verifier recovers the missing elements of A and B (each one of the missing parameters is a known linear combination of the two parameters in the signature). The verifier calculates the hash of the message and defines M and verifies that: A²−U·B²=M.

A simplified version of the scheme is when M₁=M₂. In this case there is no need to calculate the matrix M, the modulo N number M is defined to be the hash of the message, the matrices A and B are defined the same as before and the verification of the signature is done by checking the equality A²−U·B²=M·I

The Modified OSS scheme protects against Pollard attack as the attack cannot be launched against matrices.

Note that although the above was presented in terms of the Matrix-method, an equivalent protection against Pollard attack can be presented using the Polynomial-method.

Low-Cost (Collaborative) Security Platforms

The logical components of a low cost collaborative security platform, (LH)², consisting of a low performance high security element and a low-security high performance host or server is depicted in FIG. 1. The idea is that a given security function or data can be performed under a homomorphic encryption in low (or no security) environment, e.g., public cloud server, while the homomorphic secret and its related light operation is performed in the low performance secure (low-cost) element.

An example is a PFKG private function for (content) key generation. The PFKG in its homomorphic-encrypted form runs in the host—low security STB (set top box) (and not in clear form in the SC (smart card) thus making the SC leaner)—with the broadcast ECM as its input. The output of the operation is the desired homomorphic-encrypted pre-hash content key. The SC receives the homomorphic-encrypted pre-hash content key and decrypts it to get the pre-hash content key. It then hashes it and sends it back to the host as the content key used in content decryption.

Thus the mechanism to generate the broadcast content key is protected from any attack on the host STB.

Verification of Computational Integrity

It is frequently necessary to verify that the party who performed a homomorphic computation on behalf of a secure client did in fact do the job correctly, i.e., the returned result is valid.

Denoting the received result to be verified as R*_(M) for a result returned using an MRHT or MEnc function hereinafter denoted as M, and the result being denoted R*_(P) for a result returned using a PRHT or PEnc function denoted as hereinafter P, then the result comprising a result of a homomorphic calculation denoted f performed on A₁, A₂, . . . , A_(k) wherein A_(i) is equal to one of M(X_(i)) and P(X_(i)); f(A₁, A₂, . . . , A_(k)) is equal to one of: M (f(X₁, X₂, . . . , X_(k)))=f(M(X₁), M(X₂), . . . , M(X_(k))) and P(f(X₁, X₂, . . . , X_(k)))=f(P(X₁, P(X₂), . . . , P(X_(k))). The result of (A₁, A₂, . . . , A_(k)) is in one of two forms:

Either

${{M\left( {f\left( {X_{1},X_{2},\ldots \mspace{14mu},X_{K}} \right)} \right)} = {{{S\begin{pmatrix} {{f\left( {X_{1},X_{2},\ldots \mspace{14mu},X_{K}} \right)}\mspace{14mu} \ldots} & {0\mspace{14mu} \ldots} & 0 \\ \ldots & \ldots & \ldots \\ {0\mspace{14mu} \ldots} & {{f\left( {Y_{m\; 1},Y_{m\; 2},\ldots \mspace{14mu},Y_{mk}} \right)}\mspace{14mu} \ldots} & 0 \\ \ldots & \ldots & \ldots \\ {0\mspace{14mu} \ldots} & {0\mspace{14mu} \ldots} & {f\left( {Y_{{n - 1},1},Y_{{n - 1},2},\ldots \mspace{14mu},Y_{{n - 1},k}} \right)} \end{pmatrix}}S^{- 1}} = R_{M}^{*}}};$

Or:

f(A₁, A₂, . . . , A_(k)) in the form of a*₀, a*₁ . . . , a*_(n−1),=R*_(P).

in the case where the result is in the form of R*_(M):

f(Y_(m1), Y_(m2), . . . , Y_(mk)), hereinafter denoted Q, is computed for some value, m, m=1, 2, . . . , n−1 where Y_(mj) is the m^(th) random value used in either randomizing or in encrypting X_(m).

R*_(M) is then one of: decrypted; and derandomized using the decryption and derandomization techniques explained above, thereby determining f(Y_(m1), Y_(m2), . . . , Y_(mk)), hereinafter denoted E, from the resulting matrix diagonal of the m+1 row of the matrix. E is then compared with Q. The result of the computation of f(Xi) is deemed valid if a match occurs.

Alternatively, in the case where the result is in the form of R*_(P):

f(Y_(m1), Y_(m2), . . . , Y_(mk)), hereinafter denoted Q, is computed for some value, m, m=1, 2, . . . , n−1 where Y_(mj) the m^(th) random used in one of randomizing; and encrypting X_(m).

R*_(P) is one of decrypted or derandomized, thereby determining:

Σ_(j=0) ^(n−1)a*_(j)·v_(m+1) ^(j) =f(R _(m1) , R _(m2) , . . . ,R _(mk)) denoted as E.

E is then compared with Q. The result of the computation of f(Xi) is deemed valid if a match occurs.

Matrix Mode Example

Although, as has been noted, the Matrix-method and Polynomial-method are equivalent, for the sake of illustration consider the matrix

$A = {{S\begin{pmatrix} X & 0 \\ 0 & Y \end{pmatrix}}S^{- 1}}$

as the cipher text of X (it is appreciated that the cipher text may be generalized as an N×N matrix); A is used in homomorphic computation of a function f(A)=Enc(f(X))=R*. The result R* is returned to the secure client for decryption of the form

$R = \begin{pmatrix} {f(X)} & 0 \\ 0 & {f(Y)} \end{pmatrix}$

The secure client has pre-computed f(Y) and compares it with the f(Y) in R. A positive match ensures the client that f(X) is a valid result.

Those skilled in the art will appreciate that the above verification of computational integrity can be shown for the polynomial method as well.

Recently, Xiao published a paper entitled, An Efficient Homomorphic Encryption Protocol for Multi-User Systems, available at www.utdallas.edu/˜ilyen/techrep/HPbound.pdf which proposes a solution for the homomorphic encryption problem. The inventors of the present invention are of the opinion that the above-mentioned paper presents a method based on 4×4 diagonal matrices where an arbitrary plaintext data and a nonce instantiate the diagonal; and the cipher text is represented through the application of a secret 4×4 matrix to the diagonal matrix.

The matrix-based method described herein (referred to as “MORE” in Appendix A) claims (see the proofs in the section entitled “Security” in Appendix A) that the use of diagonal commutative matrices over Z_(N) is valid, i.e. secure, for homomorphic encryption for plaintext inputs (x₁, x₂, . . . , x_(n)) that are constrained, that is, selected uniformly and independently over Z_(N); i.e., the x_(i)'s are randomly chosen in Z_(N).

On the other hand, the reference mentioned above (“An Efficient Homomorphic Encryption Protocol for Multi-User Systems”) presents a homomorphic encryption scheme for any (arbitrary) plaintext inputs, namely, the (x₁, x₂, . . . , x_(n)) are unconstrained both in size and statistical properties. The reference's claim for security of the scheme presented therein is incorrect.

It can be shown that:

-   -   for small-value plaintext inputs, (e.g., x_(i)<80 bytes); or     -   for plaintext values that are not statistically independent         (e.g., x1=3x₂−4(x₃)²),

the scheme presented in the “An Efficient . . . ” reference is not secure and can be broken despite the reference's claim to security strength of factoring. As such, the scheme presented in the “An Efficient . . . ” reference cannot be considered a valid encryption scheme as presented. Note that the attack described below works even when no known plaintext is available, and, more importantly, the attack will also work in the case of 4×4 scheme (“E₄”) that is claimed to be secure in the known-plaintext model.

For the case of small-value plaintext inputs, (e.g., x_(i)<80 bytes): the encryption scheme is not secure and can be broken in practice i.e. once a sequence of n small-value plain text values is encrypted using the scheme proposed it is possible to recover the secret plain text values.

Suppose there is a sequence of n cipher text messages with plain texts: x₁. . . x_(n) each one of which satisfies x_(i)<2^(80·8) (i.e. x_(i)<80 bytes). Take N with conventional size, e.g., N is an integer with a base 2 representation of 1024 bit long.

Using the notation of the “An Efficient . . . ” reference, the cipher text takes the form:

${E\left( x_{i} \right)} = {{k^{- 1}\begin{pmatrix} x_{i} & 0 \\ 0 & R_{i} \end{pmatrix}}{k.}}$

All matrices E(x_(i)) reside in subspace of dimension 2, therefore there are two mod N numbers a and b such that for all 1≦i≦n there are: x_(i)=aE(x_(i))_(1,1)+bE(x_(i))_(1,2) mod N .

Consider the following lattice L of dimension n+2 spanned by the vectors:

w ₁=(a,0,E(x ₁hd 1,1, . . . ,E(x _(n))_(1,1))

w ₂=(0,a,E(x ₁)_(1,2), . . . ,E(x _(n))_(1,2))

w ₃=(0,0,N, ,0, . . . 0, ,0)

w ₄=(0,0,0, ,N, . . . ,0, ,0)

w_(n+2)=(0,0,0 0 . . . 0 N)

For sufficiently large n (e.g. n>4) and a correct choice for a˜2^(8·80)/N, since x_(i) are small enough the vector (aa, ba, x₁ . . . x_(n)) is the nonzero vector in L having the smallest norm (length) and any other nonzero vector in the lattice has much larger norm. These are sufficient to ensure that the LLL algorithm will result in finding the smallest non-zero element in a lattice.

The representation of the vector w_(min) as an integer combination of the lattice base elements w₁ . . . , w_(i), . . . , w_(n+2) is unique and has the form:

$w_{m\; i\; n} = {{aw}_{1} + {bw}_{2} + {\sum\limits_{i = 3}^{n + 2}\; {c_{i}w_{i}}}}$

Once w_(min) is recovered the coefficients a, b are easily found using standard linear algebra and the required parameters are found.

As mentioned above, the relationship between the cipher text and the plain text is known: x_(i)=aE(x_(i))_(1,1)+bE(x_(i))_(1,2) mod N and this enables an attacker to recover the plain text given the cipher text.

As a result the inventors of the present invention conclude that the proposed algorithm is not a secure encryption scheme for encrypting small plain text values.

For the case of plaintext values that are not statistically independent (e.g., x1=3x₂−4(x₃)²):

It can be shown that for plaintext values that are not statistically independent (e.g., x₁=3x₂−4(x₃)²), the scheme is not secure and can be broken despite the authors' claim to security strength of factoring.

The notations E(x₁), E(x₂), E(x₃) are used for encrypted values of the plaintexts x₁, x₂,

${x_{3}\mspace{14mu} {E\left( x_{i} \right)}} = {{k^{- 1}\begin{pmatrix} x_{i} & 0 \\ 0 & R_{i} \end{pmatrix}}k}$

for 1≦i≦3. Assume that x₁, x₂, x₃ satisfy an algebraic relation: x₁=3x₂−4(x₃)² or x₁+4(x₃)²−3x₂=0 then, it can be shown how the plain text can be recovered.

Since the scheme is homomorphic there is the following matrix relation:

E(x₁) − 3E(x₂) + 2(E(x₃))² = E(0)  or ${{E\left( x_{1} \right)} - {3{E\left( x_{2} \right)}} + {2\left( {E\left( x_{3} \right)} \right)^{2}}} = {{k^{- 1}\begin{pmatrix} 0 & 0 \\ 0 & R \end{pmatrix}}k}$

The values R₁, R₂, R₃ are chosen randomly and therefore the value R is not equal 0 with very high probability. Given that it is easy to find the subspace of all vectors mapped to (0,0) by the matrix

${k^{- 1}\begin{pmatrix} 0 & 0 \\ 0 & R \end{pmatrix}}k$

using standard linear algebra techniques.any non zero vector in this one dimensional subspace v₁ is good E(x₁) v₁=x₁·v₁; E(x₂)v₁=x₂·v₁;

E(x ₃)v ₁ =x ₃ ·v ₁

The alternative polynomial-based encryption method described herein provides great performance enhancement over the matrix method herein (from four large number multiplications to only one). Unlike the matrix method (where the algebraic operations of addition and multiplication are standard matrix operations), the polynomial performs the algebraic operations of addition and multiplication over a ring of polynomials modulo some special polynomial of degree 2 or higher.

Moreover:

a. the efficiency of the computation for arbitrary function of cipher texts (with additions and multiplications) is preserved (capped) by calculating the intermediate results modulo some special polynomial of degree 2 or above; and

b. the efficiency of multiplication of cipher texts is improved over the matrix method.

Reference is now made to FIGS. 3A-3E, which are flowchart diagrams depicting methods for the various embodiments of the system of FIG. 1. FIGS. 3A-3E are believed to be self-explanatory in light of the above discussion.

It is appreciated that software components of the present invention may, if desired, be implemented in ROM (read only memory) form. The software components may, generally, be implemented in hardware, if desired, using conventional techniques. It is further appreciated that the software components may be instantiated, for example: as a computer program product; on a tangible medium; or as a signal interpretable by an appropriate computer.

It is appreciated that various features of the invention which are, for clarity, described in the contexts of separate embodiments may also be provided in combination in a single embodiment. Conversely, various features of the invention which are, for brevity, described in the context of a single embodiment may also be provided separately or in any suitable subcombination.

It will be appreciated by persons skilled in the art that the present invention is not limited by what has been particularly shown and described hereinabove. Rather the scope of the invention is defined by the appended claims and equivalents thereof: 

1. A fully homomorphic method for randomizing an input, wherein all computations are over a commutative ring hereinafter denoted as CR, the method comprising: receiving an input denoted INP comprising a sequence of k input elements in CR; performing either one of (a) or (b): (a) randomly choosing a secret n×n matrix in CR, hereinafter denoted as S, S being utilized as a symmetric randomizing key, wherein S comprises an invertible matrix over CR; determining S⁻¹; for each set i of m distinct input elements among k elements comprising INP, wherein 0<m<k+1 and m<n selected from INP that are to be jointly randomized, and denoted hereinafter as X₁, X₂, . . . , X_(m), selecting n−m (a minus m) random numbers Y₁, Y₂, . . . Y_(n−m), in CR, where the input elements X₁, X₂, . . . , X_(m); at least one random number selected from among the set of random numbers Y₁, Y₂, . . . Y_(n−m); and, optionally. one or more constants are placed in a diagonal of an n×n diagonal matrix, denoted M, wherein, aside from the diagonal, matrix M is only populated by zeros; and determining random output A_(im) for the m input elements in set i denoted as {X_(im)}=X₁, X₂, . . . , X_(m), by utilizing a matrix-based randomizing and homomorphic transformation function hereinafter denoted MRHT, wherein: ${{MRHT}\left( \left\{ X_{im} \right\} \right)} = {A_{im} = {{SMS}^{- 1} = \begin{pmatrix} a_{11} & \ldots & a_{1\; n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \ldots & a_{nn} \end{pmatrix}}}$ thereby producing a random output Am corresponding to the i set of its input elements {X_(im)}=X₁, X₂, . . . , X_(m); and (b) selecting n random numbers in CR, the n random numbers hereinafter denoted as v₁, v₂, . . . , v_(n); determining a public polynomial P(v)=Π_(i=1) ^(n)(v−v_(i))=Σ_(j=0) ^(n)C_(j)·v^(j)(C_(n)=1); selecting a polynomial-based randomizing and homomorphic transformation function hereinafter denoted PRHT (X_(im)), comprising any function in variable v of the form Σ_(j=0) ^(n−1)a_(ij)·v^(j) which satisfies the equations: Σ_(j=0) ^(n−1) a _(ij) ·v ₁ ^(j) =X ₁,Σ_(j=0) ^(n−1) a _(ij) ·v ₂ ^(j) =X ₂, . . . ,Σ_(j=0) ^(n−1) a _(ij) ·v _(m) ^(j) =X _(m): choosing n−m random values in CR, for a_(i,m), a_(i,m+1) . . . , a_(i,n−1), that would yield a solution for the above equations for a_(i,0), a_(i,1) . . . , a_(i,m−1); and if (b) was performed, then performing either one of (c) or (d): (c) producing a random output A_(im) corresponding to input elements X₁, X₂, . . . , X_(m) comprising the set (a_(i0), a_(i1), . . . , a_(in−1)) and public set of coefficients (C₀, C₁, . . . , C_(n−1), C_(n)) of P(v), wherein the public set of coefficients (C₀, C₁, . . . , C_(n−1), C_(n)) are required for arithmetic performing operations with input elements; and (d) selecting for the given input dements X₁, X₂, . . . , X_(m), n−m random values R₁, . . . , R_(n−m) in CR that would solve the following n simultaneous equations: ti Σ_(j=0) ^(n−1) a _(ij) ·v ₁ ^(j) =X ₁,Σ_(j=0) ^(n−1) a _(ij) ·v ₂ ^(j) =X ₂, . . . ,Σ_(j=0) ^(n−1) a _(ij) ·v _(m) ^(j) =X _(m), Σ_(j=0) ^(n−1) a _(ij) ·v _(m+1) ^(j) =R ₁, Σ_(j=0) ^(n−1) a _(ij) ·v _(m+2) ^(j) =R ₂, . . . , Σ_(j=0) ^(n−1) a _(ij) ·v _(n) ^(j) =R _(n−m) for unknowns a_(i0), a_(i1), . . . , a_(in−1), thereby producing, for X₁, X₂, . . . X_(m) a random text comprising the set (a_(i0), a_(i1), . . . , a_(in−1)) and public set (C₀, C₁, . . . , C_(n−1), C_(n)) of P(v).
 2. The method according to claim 1, wherein she randomization of the input INP comprises a successive application of a mix of functions PRHT(X_(i)) and MRHT(X_(i)), where Xi denotes a set of m distinct input elements of INP and wherein: ${{{MRHT}\left( {{PRHT}\left( X_{i} \right)} \right)} = {\left( {{{MRHT}\left( a_{i\; 0} \right)},{{MRHT}\left( a_{i\; 1} \right)},\ldots \mspace{14mu},{{MRHT}\left( a_{{i\; n} - 1} \right)}} \right)==\left( {\begin{pmatrix} a_{11} & \ldots & a_{1\; n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \ldots & a_{nn} \end{pmatrix}_{i\; 0},\begin{pmatrix} a_{11} & \ldots & a_{1\; n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \ldots & a_{nn} \end{pmatrix}_{i\; 1},\ldots \mspace{14mu},\begin{pmatrix} a_{11} & \ldots & a_{1\; n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \ldots & a_{nn} \end{pmatrix}_{{i\; n} - 1}} \right)}};{and}$ $\mspace{20mu} {{{PRHT}\left( {{MRHT}\left( X_{i} \right)} \right)} = {{{PRHT}\left( \begin{pmatrix} a_{11} & \ldots & a_{1\; n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \ldots & a_{nn} \end{pmatrix} \right)}{where}}}$   PRHT(a_(mj)) = (a₀, a₁, …  , a_(n − 1))_(mj), therefore ${{PRHT}\left( {{MRHT}\left( X_{i} \right)} \right)} = {\begin{pmatrix} \left( {a_{0},a_{1},\ldots \mspace{14mu},a_{n - 1}} \right)_{11} & \ldots & \left( {a_{0},a_{1},\ldots \mspace{14mu},a_{n - 1}} \right)_{1\; n} \\ \vdots & \ddots & \vdots \\ \left( {a_{0},a_{1},\ldots \mspace{14mu},a_{n - 1}} \right)_{n\; 1} & \ldots & \left( {a_{0},a_{1},\ldots \mspace{14mu},a_{n - 1}} \right)_{nn} \end{pmatrix}.}$
 3. A method for derandomizing the randomized input of claim 1, the method comprising: performing either one of (a) or (b): (a) receiving an output comprising a randomized X_(im) input being an n×n diagonal matrix denoted hereinafter as A_(im), over CR, where: $A_{im} = {{{MRHT}\left( X_{im} \right)} = {{SMS}^{- 1} = \begin{pmatrix} a_{11} & \ldots & a_{1\; n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \ldots & a_{nn} \end{pmatrix}}}$ using S to determine $S^{- 1} = \begin{pmatrix} s_{11}^{\prime} & \ldots & s_{1\; n}^{\prime} \\ \vdots & \ddots & \vdots \\ s_{n\; 1}^{\prime} & \ldots & s_{nn}^{\prime} \end{pmatrix}$ and determining X_(im) by performing one of: S⁻¹, A_(im)·S=M where X₁, X₂, . . . , X_(m) are the upper left elements of the resulting diagonal matrix above, alternatively: X _(i)=(1/s′ _(i1))·Σ_(j=1) ^(n) a _(j1) ·s′ _(ij) for =1, . . . m; and (b) receiving the randomized output for X_(im) as (a_(i0), a_(i1), . . . , a_(in−1)) and using v₁, v₂, . . . , v_(m) to determine the derandomized input Σ_(j=0) ^(n−1)a_(ij)·v₁ ^(j)=X₁,Σ_(j=0) ^(n−1)a_(ij)·v₂ ^(j)=X₂, . . . ,Σ_(j=0) ^(n−1)a_(ij)·v_(m) ^(j)=X_(m).
 4. A method for addition of randomized X₁ and randomized X₂ X₁ and X₂ being randomized according to the fully homomorphic method for randomizing an input of claim 1, the method comprising: for X_(i) comprising MRHT (X_(i))=A_(i); receiving A₁ and A₂; and MRHT(X ₁)+MRHT(X ₂)=A ₁ +A ₂; and for X_(i) comprising PRHT (X_(i))=a_(i0), a_(i1), . . . , a_(in−1): receiving PRHT (X₁)=a₁₀, a₁₁, . . . , a_(1n−1) and PRHT (X₂)=a₂₀, a₂₁, . . . , a_(2n−1) and C₀, C₁, . . . , C_(n−1), C_(n) of P(v)=Σ_(j=0) ^(n)C_(j)·v^(j) (C_(n)=1; and PRHT(X ₁)+PRHT(X ₂)=a ₁₀ +a ₂₀,a₁₁ +a ₂₁ , . . . ,a _(1n−1) +a _(2n−1).
 5. A method for multiplication of randomized X₁ and randomized X₂, X₁ and X₂ being randomized according to the fully homomorphic method for randomizing an input of claim 1, the method comprising: for X_(i) comprising MRHT (X_(i))=A_(i:) receiving A₁ and A₂; and MRHT(X ₁)·MRHT(X ₂)=A ₁ ·A ₂; and for X_(i) comprising PRHT (X_(i))=a_(i0), a_(i1), . . . , a_(in−1): receiving PRHT (X₁)=a₁₀, a₁₁, . . . a_(1n−1) and PRHT (X₂)=a₂₀, a₂₁, . . . , a_(2n−1) and C₀, C₁, . . . , C_(n−1), C_(n) of P(v)=Σ_(j=0) ^(n)C_(j)·v^(j) (C_(n)=1); and PRHT (X₁)·PRHT (X₂)=r₁₀, r₁₁, . . . , r_(1n−1), the coefficients of the resulting n−1 order polynomial r(v), where r(v)=((Σ_(j=0) ^(n−1)a_(1j)·v^(j))·(Σ_(j=0) ^(n−1)a_(2j)·v^(j)))mod Σ_(j=0) ^(n)C_(j)·v^(j).
 6. A method for dividing of randomized X₁ and randomized X₂, X₁ and X₂ being randomised according to the fully homomorphic method for randomizing an input of claim 1, the method comprising: for X_(i) comprising MRHT (X_(i))=A_(i): receiving A₁ and A₂; 1/MRHT(X ₂)=A ₂ ⁻¹ and MRHT(X ₁)/MRHT(X ₂)=A ₁ ·A ₂ ⁻¹ for X_(i) comprising PRHT (X_(i))a_(i0), a_(i1), . . . , a_(in−1): receiving PRHT (X₁)=a₁₀, a₁₁, . . . , a_(1n−1) and PRHT (X₂)=a₂₀, a₂₁, . . . , a_(2n−1) and C₀, C₁, . . . C_(n−1), C_(n) of P(v)=Σ_(j=0) ^(n)C_(j)·v^(j) (C_(n)=1); deriving 1/PRHT(X₂)=u₂₀, u₂₁, . . . , u_(2n−1) by calculating ((Σ_(j=0) ^(n−1)u_(2j)·v^(j))·(Σ_(j=0) ^(n−1)a_(2j)·v^(j)))mod Σ_(j=0) ^(n)C_(j)·v^(j)=1 terms of n unknown coefficients u_(2j), (j=0, . . . , n−1), thereby determining Σ_(j=0) ^(n−1)g_(2j)(u₂₀, u₂₁, . . . , u_(2n−1), a₁₀, a₂₁, . . . , a_(2n−1), c₁₀, c₂₁, . . . , c_(2n−1))·v^(i)), wherein g_(2j)( ) is a linear combination of a plurality of n unknowns u_(2j); solving n derived equations g₂₀( )=1, and g_(2j)( )=0 for j=1, . . . , n−1 for all u_(2j) j=0, . . . , n−1; and PRHT(X ₁)/PRHT(X ₂)=PRHT(X ₁)·(1/PRHT(X ₂))=Σ_(j=0) ^(n−1) a _(1j) ·v ^(j))·(Σ_(j=0) ^(n−1) u _(2j) ·v ^(j)))mod Σ_(j=0) ^(n) C _(j) ·v ^(j).
 7. The method according to claim 1, wherein at least one of the randomized inputs comprises a cryptographic key.
 8. The method according to claim 1, wherein the cryptographic key comprises an AES key.
 9. The method according to claim 1, wherein the at least one of the randomized inputs comprises a mod N-number polynomial coefficient.
 10. The method according to claim 9, wherein the mod N-number polynomial coefficient is used for a Private Function Key Generation.
 11. The method according to claim 9, wherein the mod N-number polynomial coefficient is used for a private hash-based message authentication code.
 12. The method according to claim 9, wherein the mod N-number polynomial coefficient is used for generating an OSS signature.
 13. The method according to claim 1, wherein the input comprises a plain text, the output comprises a cipher text, and all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix S comprises symmetric encryption key, wherein the encryption functions are denoted as MEnc and PEnc correspond to MRHT and PRHT, respectively.
 14. The method according to claim 13, wherein the encryption of the plain text comprises a successive application of a mix of encryption functions PEnc=PRHT(X_(i)) and MEnc=MRHT(X_(i)), wherein: ${{{MEnc}\left( {{PEnc}\left( X_{i} \right)} \right)} = {\left( {{{MEnc}\left( a_{i\; 0} \right)},{{MEnc}\left( a_{i\; 1} \right)},\ldots \mspace{14mu},{{MEnc}\left( a_{{i\; n} - 1} \right)}} \right)==\left( {\begin{pmatrix} a_{11} & \ldots & a_{1\; n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \ldots & a_{nn} \end{pmatrix}_{i\; 0},\begin{pmatrix} a_{11} & \ldots & a_{1\; n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \ldots & a_{nn} \end{pmatrix}_{i\; 1},\ldots \mspace{14mu},\begin{pmatrix} a_{11} & \ldots & a_{1\; n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \ldots & a_{nn} \end{pmatrix}_{{i\; n} - 1}} \right)}};{and}$ $\mspace{20mu} {{{PEnc}\left( {{MEnc}\left( X_{i} \right)} \right)} = {{{PEnc}\left( \begin{pmatrix} a_{11} & \ldots & a_{1\; n} \\ \vdots & \ddots & \vdots \\ a_{n\; 1} & \ldots & a_{nn} \end{pmatrix} \right)}{where}}}$   PEnc(a_(ij)) = (a₀, a₁, …  , a_(n − 1))_(ij).
 15. The method according to claim 3, wherein the received output comprises a cipher text denoted C, the cipher text C being produced as an output from a plain text input and all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix S comprises symmetric encryption key, wherein the encryption functions are denoted as MEnc and PEnc correspond to MRHT and PRHT, respectively and the randomized input comprises a plain text, and all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix 5 comprises symmetric encryption key.
 16. A method for addition of a pair of cipher text outputs Ci and Cj, Ci and Cj being cipher texts produced as an output from a plain is a product of two prime numbers, and matrix S comprises symmetric encryption to MRHT and PRHT, respectively the method comprising adding Ci and Cj according to the method of claim 4 wherein ail computations are performed modulo H over a ring Z_(N), where N is a product of two prime numbers, and matrix S comprises symmetric encryption key.
 17. A method for multiplication of a pair of cipher text outputs Ci and Cj, Ci and Cj comprising cipher texts produced as an output from a plain text input and all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix S comprises and PEnc correspond to MRHT and PRHT, respectively the method comprising multiplying Ci and Cj according to the method of claim 5, wherein all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix S comprises a symmetric encryption key.
 18. A method for division of a pair of cipher texts outputs Ci and Cj , Ci and Cj comprising cipher texts produced as an output from a plain text input and all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix S comprises symmetric encryption key, wherein the encryption functions are denoted as MEnc and PEnc correspond to MRHT and PRHT, respectively, the method comprising dividing Ci and Cj according to the method of claim 6 wherein all computations are performed modulo N over a ring Z_(N), where N is a product of two prime numbers, and matrix S comprises symmetric encryption key.
 19. A method for verifying that a returned result of a calculation performed by a third party is valid, the result being performed by the method of claim 1, the result being denoted R*_(M) for a result returned using an MRHT or MEnc function denoted as M, and the result being denoted R*_(P) for a result, returned using a PRHT or PEnc function denoted as P, the result comprising a result of a homomorphic calculation denoted f performed on A₁,A₂, . . . ,A_(k) wherein A_(i) is equal to one of M(X_(i)) and P(X_(i)); f(A₁, A₂, . . . , A_(k)) is equal to one of: M (f(X₁, X₂, . . . , X_(k)))=f(M(X₁), M(X₂), . . . , M(X_(k))) and P(f(X₁, X₂, . . . , X_(k)))=f(P(X₁), P(X₂), . . . , P(X_(k))) the method comprising: receiving the result of f(A₁, A₂, . . . , A_(k)) in the one of the forms: ${{M\left( {f\left( {X_{1},X_{2},\ldots \mspace{14mu},X_{K}} \right)} \right)} = {{{S\begin{pmatrix} {{f\left( {X_{1},X_{2},\ldots \mspace{14mu},X_{K}} \right)}\mspace{14mu} \ldots} & {0\mspace{14mu} \ldots} & 0 \\ \ldots & \ldots & \ldots \\ {0\mspace{14mu} \ldots} & {{f\left( {Y_{m\; 1},Y_{m\; 2},\ldots \mspace{14mu},Y_{mk}} \right)}\mspace{14mu} \ldots} & 0 \\ \ldots & \ldots & \ldots \\ {0\mspace{14mu} \ldots} & {0\mspace{14mu} \ldots} & {f\left( {Y_{{n - 1},1},Y_{{n - 1},2},\ldots \mspace{14mu},Y_{{n - 1},k}} \right)} \end{pmatrix}}S^{- 1}} = R_{M}^{*}}};$ and f(A₁, A₂, . . . , A_(k)) in the form of a*₀, a*₁ . . . , a*_(n−1),=R*_(P); in the case where the result is in the form of R*_(M): computing f(Y_(m1), Y_(m2), . . . , Y_(mk)), denoted as Q, for any m, m=1, 2, . . . , n−1 where Y_(mj) comprises the m^(th) random value used in one of encrypting; and randomizing X_(j); performing one of decrypting; and derandomizing R*_(M) thereby determining f(Y_(m1), Y_(m2), . . . , Y_(mk)), denoted as E from the resulting matrix diagonal of m+1 row; and deeming the result the of the computation of f(Xi) valid if E equals to Q; and in the case where the result is in the form of R*_(P): computing f(Y_(m1), Y_(m2), . . . , Y_(mk)), denoted as Q, for any m, m=1, 2, . . . , n−1 where Y_(mj) comprises the m^(th) random value used in one of encrypting; and randomizing performing one of decrypting; and derandomizing R*_(P), thereby determining: Σ_(j=0) ^(n−1)a*_(j)·v_(m+1) ^(j)=f(R_(m1), R_(m2), . . . , R_(mk)), denoted as E; and deeming the result the of the computation of f(X₁, X₂, . . . , X_(K)) valid if E equals Q. 